<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>原型</title>
</head>
<body>
  <script>
    // 隐式与显示原型
    // 每个构造函数都有一个显示原型 prototype
    // 每个实例对象都有一个隐式原型 __proto__
    // 函数的显示原型等于其实例对象的隐式原型
    var  str = "abc";
    // str.__proto__ === String.prototype

    // 原型有什么用？
    // 1. 定义实例的公用方法

    String.prototype.reverse = function(){
      return this.split('').reverse().join('')
    }

    // 工作中哪些地方用到了原型
    // vue2全局方法的挂载
    // Vue.prototype.$http = axios;
    // 所有的vue组件都是Vue的实例，所有vue的组件都拥有$http方法 this.$http访问公用方法

    Array.prototype.max = function(){
      return Math.max(...this);
    }
    var  arr = [1,-5,3]

    // 一般不要修改js原生对象的原型
  </script>
</body>
</html>